home *** CD-ROM | disk | FTP | other *** search
/ PowerQuest 2002 / PowerQuest 2002.iso / POWERQUEST / PQ ControlCenter ST v2.04a for DeployCenter / CCST / data1.cab / HTML_Pages / CCDC / 0411 / calendar.js < prev    next >
Encoding:
Text File  |  2001-12-05  |  14.6 KB  |  540 lines

  1. var weekend = [0,6];
  2. var weekendColor = "#d2e2e6";
  3. var fontface = "Arial";
  4. var fontsize = 2;
  5.  
  6. var gNow = new Date();
  7. var ggWinCal;
  8. isNav = (navigator.appName.indexOf("Netscape") != -1) ? true : false;
  9. isIE = (navigator.appName.indexOf("Microsoft") != -1) ? true : false;
  10.  
  11. Calendar.Months = ["1µ£ê", "2µ£ê", "3µ£ê", "4µ£ê", "5µ£ê", "6µ£ê",
  12. "7µ£ê", "8µ£ê", "9µ£ê", "10µ£ê", "11µ£ê", "12µ£ê"];
  13.  
  14.  
  15. Calendar.DOMonth = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
  16.  
  17. Calendar.lDOMonth = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
  18.  
  19. function Calendar(p_item, p_WinCal, p_month, p_year, p_format) {
  20.     if ((p_month == null) && (p_year == null))    return;
  21.  
  22.     if (p_WinCal == null)
  23.         this.gWinCal = ggWinCal;
  24.     else
  25.         this.gWinCal = p_WinCal;
  26.     
  27.     if (p_month == null) {
  28.         this.gMonthName = null;
  29.         this.gMonth = null;
  30.         this.gYearly = true;
  31.     } else {
  32.         this.gMonthName = Calendar.get_month(p_month);
  33.         this.gMonth = new Number(p_month);
  34.         this.gYearly = false;
  35.     }
  36.  
  37.     this.gYear = p_year;
  38.     this.gFormat = p_format;
  39.     this.gBGColor = "white";
  40.     this.gFGColor = "black";
  41.     this.gTextColor = "black";
  42.     this.gHeaderColor = "black";
  43.     this.gReturnItem = p_item;
  44. }
  45.  
  46. Calendar.get_month = Calendar_get_month;
  47. Calendar.get_daysofmonth = Calendar_get_daysofmonth;
  48. Calendar.calc_month_year = Calendar_calc_month_year;
  49. Calendar.print = Calendar_print;
  50.  
  51. function Calendar_get_month(monthNo) {
  52.     return Calendar.Months[monthNo];
  53. }
  54.  
  55. function Calendar_get_daysofmonth(monthNo, p_year) {
  56.     
  57.     if ((p_year % 4) == 0) {
  58.         if ((p_year % 100) == 0 && (p_year % 400) != 0)
  59.             return Calendar.DOMonth[monthNo];
  60.     
  61.         return Calendar.lDOMonth[monthNo];
  62.     } else
  63.         return Calendar.DOMonth[monthNo];
  64. }
  65.  
  66. function Calendar_calc_month_year(p_Month, p_Year, incr) {
  67.     
  68.     var ret_arr = new Array();
  69.     
  70.     if (incr == -1) {
  71.         // B A C K W A R D
  72.         if (p_Month == 0) {
  73.             ret_arr[0] = 11;
  74.             ret_arr[1] = parseInt(p_Year) - 1;
  75.         }
  76.         else {
  77.             ret_arr[0] = parseInt(p_Month) - 1;
  78.             ret_arr[1] = parseInt(p_Year);
  79.         }
  80.     } else if (incr == 1) {
  81.         // F O R W A R D
  82.         if (p_Month == 11) {
  83.             ret_arr[0] = 0;
  84.             ret_arr[1] = parseInt(p_Year) + 1;
  85.         }
  86.         else {
  87.             ret_arr[0] = parseInt(p_Month) + 1;
  88.             ret_arr[1] = parseInt(p_Year);
  89.         }
  90.     }
  91.     
  92.     return ret_arr;
  93. }
  94.  
  95. function Calendar_print() {
  96.     ggWinCal.print();
  97. }
  98.  
  99. function Calendar_calc_month_year(p_Month, p_Year, incr) {
  100.     
  101.     var ret_arr = new Array();
  102.     
  103.     if (incr == -1) {
  104.         // B A C K W A R D
  105.         if (p_Month == 0) {
  106.             ret_arr[0] = 11;
  107.             ret_arr[1] = parseInt(p_Year) - 1;
  108.         }
  109.         else {
  110.             ret_arr[0] = parseInt(p_Month) - 1;
  111.             ret_arr[1] = parseInt(p_Year);
  112.         }
  113.     } else if (incr == 1) {
  114.         // F O R W A R D
  115.         if (p_Month == 11) {
  116.             ret_arr[0] = 0;
  117.             ret_arr[1] = parseInt(p_Year) + 1;
  118.         }
  119.         else {
  120.             ret_arr[0] = parseInt(p_Month) + 1;
  121.             ret_arr[1] = parseInt(p_Year);
  122.         }
  123.     }
  124.     
  125.     return ret_arr;
  126. }
  127.  
  128.  
  129. new Calendar();
  130.  
  131. Calendar.prototype.getMonthlyCalendarCode = function() {
  132.     var vCode = "";
  133.     var vHeader_Code = "";
  134.     var vData_Code = "";
  135.     
  136.     
  137.     vCode = vCode + "<TABLE CELLSPACING=0 CELLPADDING=1 BORDER=1 BORDERCOLOR='BLACK' BGCOLOR=\"" + this.gBGColor + "\">";
  138.     
  139.     vHeader_Code = this.cal_header();
  140.     vData_Code = this.cal_data();
  141.     vCode = vCode + vHeader_Code + vData_Code;
  142.     
  143.     vCode = vCode + "</TABLE>";
  144.     
  145.     return vCode;
  146. }
  147.  
  148. Calendar.prototype.show = function() {
  149.     var vCode = "";
  150.     
  151.     this.gWinCal.document.open();
  152.  
  153.     // Setup the page...
  154.     this.wwrite("<html>");
  155.     this.wwrite("<head><title>πé½πâ¼πâ│πâÇπâ╝</title>");
  156.     this.wwrite("</head>");
  157.  
  158.     this.wwrite("<body bgcolor='#ffffcc'" + 
  159.         "link=\"" + this.gLinkColor + "\" " + 
  160.         "vlink=\"" + this.gLinkColor + "\" " +
  161.         "alink=\"" + this.gLinkColor + "\" " +
  162.         "text=\"" + this.gTextColor + "\">");
  163.     this.wwriteA("<FONT FACE='" + fontface + "' SIZE=2><B>");
  164.     this.wwriteA(this.gMonthName + " " + this.gYear);
  165.     this.wwriteA("</B><BR>");
  166.  
  167.     // Show navigation buttons
  168.     var prevMMYYYY = Calendar.calc_month_year(this.gMonth, this.gYear, -1);
  169.     var prevMM = prevMMYYYY[0];
  170.     var prevYYYY = prevMMYYYY[1];
  171.  
  172.     var nextMMYYYY = Calendar.calc_month_year(this.gMonth, this.gYear, 1);
  173.     var nextMM = nextMMYYYY[0];
  174.     var nextYYYY = nextMMYYYY[1];
  175.     
  176.     this.wwrite("<TABLE WIDTH='100%' BORDER=1 CELLSPACING=0 CELLPADDING=0 BGCOLOR='#d2e2e6' bordercolor='007882'><TR><TD ALIGN=center>");
  177.     this.wwrite("[<A HREF=\"" +
  178.         "javascript:window.opener.Build(" + 
  179.         "'" + this.gReturnItem + "', '" + this.gMonth + "', '" + (parseInt(this.gYear)-1) + "', '" + this.gFormat + "'" +
  180.         ");" +
  181.         "\"><<<\/A>]</TD><TD ALIGN=center>");
  182.     this.wwrite("[<A HREF=\"" +
  183.         "javascript:window.opener.Build(" + 
  184.         "'" + this.gReturnItem + "', '" + prevMM + "', '" + prevYYYY + "', '" + this.gFormat + "'" +
  185.         ");" +
  186.         "\"><<\/A>]</TD><TD ALIGN=center>");
  187.     this.wwrite("<P><B>πé½πâ¼πâ│πâÇπâ╝</B></P></TD><TD ALIGN=center>");
  188.     this.wwrite("[<A HREF=\"" +
  189.         "javascript:window.opener.Build(" + 
  190.         "'" + this.gReturnItem + "', '" + nextMM + "', '" + nextYYYY + "', '" + this.gFormat + "'" +
  191.         ");" +
  192.         "\">><\/A>]</TD><TD ALIGN=center>");
  193.     this.wwrite("[<A HREF=\"" +
  194.         "javascript:window.opener.Build(" + 
  195.         "'" + this.gReturnItem + "', '" + this.gMonth + "', '" + (parseInt(this.gYear)+1) + "', '" + this.gFormat + "'" +
  196.         ");" +
  197.         "\">>><\/A>]</TD></TR></TABLE><BR>");
  198.  
  199.     
  200.     vCode = this.getMonthlyCalendarCode();
  201.     this.wwrite(vCode);
  202.  
  203.     this.wwrite("</font></body></html>");
  204.     this.gWinCal.document.close();
  205. }
  206.  
  207. Calendar.prototype.showY = function() {
  208.     var vCode = "";
  209.     var i;
  210.     var vr, vc, vx, vy;        
  211.     var vxf = 285;            
  212.     var vyf = 200;            
  213.     var vxm = 10;            
  214.     var vym;                
  215.     if (isIE)    vym = 75;
  216.     else if (isNav)    vym = 25;
  217.     
  218.     this.gWinCal.document.open();
  219.  
  220.     this.wwrite("<html>");
  221.     this.wwrite("<head><title>πé½πâ¼πâ│πâÇπâ╝</title>");
  222.     this.wwrite("<style type='text/css'>\n<!--");
  223.     for (i=0; i<12; i++) {
  224.         vc = i % 3;
  225.         if (i>=0 && i<= 2)    vr = 0;
  226.         if (i>=3 && i<= 5)    vr = 1;
  227.         if (i>=6 && i<= 8)    vr = 2;
  228.         if (i>=9 && i<= 11)    vr = 3;
  229.         
  230.         vx = parseInt(vxf * vc) + vxm;
  231.         vy = parseInt(vyf * vr) + vym;
  232.  
  233.         this.wwrite(".lclass" + i + " {position:absolute;top:" + vy + ";left:" + vx + ";}");
  234.     }
  235.     this.wwrite("-->\n</style>");
  236.     this.wwrite("</head>");
  237.  
  238.     this.wwrite("<body " + 
  239.         "link=\"" + this.gLinkColor + "\" " + 
  240.         "vlink=\"" + this.gLinkColor + "\" " +
  241.         "alink=\"" + this.gLinkColor + "\" " +
  242.         "text=\"" + this.gTextColor + "\">");
  243.     this.wwrite("<FONT FACE='" + fontface + "' SIZE=2><B>");
  244.     this.wwrite("Year : " + this.gYear);
  245.     this.wwrite("</B><BR>");
  246.  
  247.     var prevYYYY = parseInt(this.gYear) - 1;
  248.     var nextYYYY = parseInt(this.gYear) + 1;
  249.     
  250.     this.wwrite("<TABLE WIDTH='100%' BORDER=1 CELLSPACING=0 CELLPADDING=0 BGCOLOR='red'  bordercolor='007882'><TR><TD ALIGN=center>");
  251.     this.wwrite("[<A HREF=\"" +
  252.         "javascript:window.opener.Build(" + 
  253.         "'" + this.gReturnItem + "', null, '" + prevYYYY + "', '" + this.gFormat + "'" +
  254.         ");" +
  255.         "\" alt='Prev Year'><<<\/A>]</TD><TD ALIGN=center>");
  256.     this.wwrite("[<p>πé½πâ¼πâ│πâÇπâ╝</p></TD><TD ALIGN=center>");
  257.     this.wwrite("[<A HREF=\"" +
  258.         "javascript:window.opener.Build(" + 
  259.         "'" + this.gReturnItem + "', null, '" + nextYYYY + "', '" + this.gFormat + "'" +
  260.         ");" +
  261.         "\">>><\/A>]</TD></TR></TABLE><BR>");
  262.  
  263.     
  264.     var j;
  265.     for (i=11; i>=0; i--) {
  266.         if (isIE)
  267.             this.wwrite("<DIV ID=\"layer" + i + "\" CLASS=\"lclass" + i + "\">");
  268.         else if (isNav)
  269.             this.wwrite("<LAYER ID=\"layer" + i + "\" CLASS=\"lclass" + i + "\">");
  270.  
  271.         this.gMonth = i;
  272.         this.gMonthName = Calendar.get_month(this.gMonth);
  273.         vCode = this.getMonthlyCalendarCode();
  274.         this.wwrite(this.gMonthName + "/" + this.gYear + "<BR>");
  275.         this.wwrite(vCode);
  276.  
  277.         if (isIE)
  278.             this.wwrite("</DIV>");
  279.         else if (isNav)
  280.             this.wwrite("</LAYER>");
  281.     }
  282.  
  283.     this.wwrite("</font><BR></body></html>");
  284.     this.gWinCal.document.close();
  285. }
  286.  
  287. Calendar.prototype.wwrite = function(wtext) {
  288.     this.gWinCal.document.writeln(wtext);
  289. }
  290.  
  291. Calendar.prototype.wwriteA = function(wtext) {
  292.     this.gWinCal.document.write(wtext);
  293. }
  294.  
  295. Calendar.prototype.cal_header = function() {
  296.     var vCode = "";
  297.     
  298.     vCode = vCode + "<TR bgcolor='#007882'>";
  299.     vCode = vCode + "<TD WIDTH='14%'><FONT SIZE='2' FACE='" + fontface + "' COLOR='white'><B>µùÑ </B></FONT></TD>"; //Sunday
  300.     vCode = vCode + "<TD WIDTH='14%'><FONT SIZE='2' FACE='" + fontface + "' COLOR='white'><B>µ£ê </B></FONT></TD>"; //Monday 
  301.     vCode = vCode + "<TD WIDTH='14%'><FONT SIZE='2' FACE='" + fontface + "' COLOR='white'><B>τü½ </B></FONT></TD>"; //Tuesday 
  302.     vCode = vCode + "<TD WIDTH='14%'><FONT SIZE='2' FACE='" + fontface + "' COLOR='white'><B>µ░┤ </B></FONT></TD>"; //Wednesday 
  303.     vCode = vCode + "<TD WIDTH='14%'><FONT SIZE='2' FACE='" + fontface + "' COLOR='white'><B>µ£¿ </B></FONT></TD>"; //Thursday 
  304.     vCode = vCode + "<TD WIDTH='14%'><FONT SIZE='2' FACE='" + fontface + "' COLOR='white'><B>Θçæ </B></FONT></TD>"; //Friday 
  305.     vCode = vCode + "<TD WIDTH='16%'><FONT SIZE='2' FACE='" + fontface + "' COLOR='white'><B>󣃠</B></FONT></TD>"; //Saturday 
  306.     vCode = vCode + "</TR>";
  307.     
  308.     return vCode;
  309. }
  310.  
  311. Calendar.prototype.cal_data = function() {
  312.     var vDate = new Date();
  313.     vDate.setDate(1);
  314.     vDate.setMonth(this.gMonth);
  315.     vDate.setFullYear(this.gYear);
  316.  
  317.     var vFirstDay=vDate.getDay();
  318.     var vDay=1;
  319.     var vLastDay=Calendar.get_daysofmonth(this.gMonth, this.gYear);
  320.     var vOnLastDay=0;
  321.     var vCode = "";
  322.  
  323.     
  324.  
  325.     vCode = vCode + "<TR>";
  326.     for (i=0; i<vFirstDay; i++) {
  327.         vCode = vCode + "<TD WIDTH='14%'" + this.write_weekend_string(i) + "><FONT SIZE='2' FACE='" + fontface + "'> </FONT></TD>";
  328.     }
  329.  
  330.     
  331.     for (j=vFirstDay; j<7; j++) {
  332.         vCode = vCode + "<TD WIDTH='14%'" + this.write_weekend_string(j) + "><FONT SIZE='2' FACE='" + fontface + "'>" + 
  333.             "<A HREF='#' " + 
  334.                 "onClick=\"self.opener.document." + this.gReturnItem + ".value='" + 
  335.                 this.format_data(vDay) + 
  336.                 "';window.close();\">" + 
  337.                 this.format_day(vDay) + 
  338.             "</A>" + 
  339.             "</FONT></TD>";
  340.         vDay=vDay + 1;
  341.     }
  342.     vCode = vCode + "</TR>";
  343.  
  344.     
  345.     for (k=2; k<7; k++) {
  346.         vCode = vCode + "<TR>";
  347.  
  348.         for (j=0; j<7; j++) {
  349.             vCode = vCode + "<TD WIDTH='14%'" + this.write_weekend_string(j) + "><FONT SIZE='2' FACE='" + fontface + "'>" + 
  350.                 "<A HREF='#' " + 
  351.                     "onClick=\"self.opener.document." + this.gReturnItem + ".value='" + 
  352.                     this.format_data(vDay) + 
  353.                     "';window.close();\">" + 
  354.                 this.format_day(vDay) + 
  355.                 "</A>" + 
  356.                 "</FONT></TD>";
  357.             vDay=vDay + 1;
  358.  
  359.             if (vDay > vLastDay) {
  360.                 vOnLastDay = 1;
  361.                 break;
  362.             }
  363.         }
  364.  
  365.         if (j == 6)
  366.             vCode = vCode + "</TR>";
  367.         if (vOnLastDay == 1)
  368.             break;
  369.     }
  370.     
  371.     
  372.     for (m=1; m<(7-j); m++) {
  373.         if (this.gYearly)
  374.             vCode = vCode + "<TD WIDTH='14%'" + this.write_weekend_string(j+m) + 
  375.             "><FONT SIZE='2' FACE='" + fontface + "' COLOR='gray'> </FONT></TD>";
  376.         else
  377.             vCode = vCode + "<TD WIDTH='14%'" + this.write_weekend_string(j+m) + 
  378.             "><FONT SIZE='2' FACE='" + fontface + "' COLOR='gray'>" + m + "</FONT></TD>";
  379.     }
  380.     
  381.     return vCode;
  382. }
  383.  
  384. Calendar.prototype.format_day = function(vday) {
  385.     var vNowDay = gNow.getDate();
  386.     var vNowMonth = gNow.getMonth();
  387.     var vNowYear = gNow.getFullYear();
  388.  
  389.     if (vday == vNowDay && this.gMonth == vNowMonth && this.gYear == vNowYear)
  390.         return ("<FONT COLOR=\"RED\"><B>" + vday + "</B></FONT>");
  391.     else
  392.         return (vday);
  393. }
  394.  
  395. Calendar.prototype.write_weekend_string = function(vday) {
  396.     var i;
  397.  
  398.     // Return special formatting for the weekend day.
  399.     for (i=0; i<weekend.length; i++) {
  400.         if (vday == weekend[i])
  401.             return (" BGCOLOR=\"" + weekendColor + "\"");
  402.     }
  403.     
  404.     return "";
  405. }
  406.  
  407. Calendar.prototype.format_data = function(p_day) {
  408.     var vData;
  409.     var vMonth = 1 + this.gMonth;
  410.     vMonth = (vMonth.toString().length < 2) ? "0" + vMonth : vMonth;
  411.     var vMon = Calendar.get_month(this.gMonth).substr(0,3).toUpperCase();
  412.     var vFMon = Calendar.get_month(this.gMonth).toUpperCase();
  413.     var vY4 = new String(this.gYear);
  414.     var vY2 = new String(this.gYear.substr(2,2));
  415.     var vDD = (p_day.toString().length < 2) ? "0" + p_day : p_day;
  416.  
  417.     switch (this.gFormat) {
  418.         case "MM\/DD\/YYYY" :
  419.             vData = vMonth + "\/" + vDD + "\/" + vY4;
  420.             break;
  421.         case "MM\/DD\/YY" :
  422.             vData = vMonth + "\/" + vDD + "\/" + vY2;
  423.             break;
  424.         case "MM-DD-YYYY" :
  425.             vData = vMonth + "-" + vDD + "-" + vY4;
  426.             break;
  427.         case "MM-DD-YY" :
  428.             vData = vMonth + "-" + vDD + "-" + vY2;
  429.             break;
  430.  
  431.         case "DD\/MON\/YYYY" :
  432.             vData = vDD + "\/" + vMon + "\/" + vY4;
  433.             break;
  434.         case "DD\/MON\/YY" :
  435.             vData = vDD + "\/" + vMon + "\/" + vY2;
  436.             break;
  437.         case "DD-MON-YYYY" :
  438.             vData = vDD + "-" + vMon + "-" + vY4;
  439.             break;
  440.         case "DD-MON-YY" :
  441.             vData = vDD + "-" + vMon + "-" + vY2;
  442.             break;
  443.  
  444.         case "DD\/MONTH\/YYYY" :
  445.             vData = vDD + "\/" + vFMon + "\/" + vY4;
  446.             break;
  447.         case "DD\/MONTH\/YY" :
  448.             vData = vDD + "\/" + vFMon + "\/" + vY2;
  449.             break;
  450.         case "DD-MONTH-YYYY" :
  451.             vData = vDD + "-" + vFMon + "-" + vY4;
  452.             break;
  453.         case "DD-MONTH-YY" :
  454.             vData = vDD + "-" + vFMon + "-" + vY2;
  455.             break;
  456.  
  457.         case "DD\/MM\/YYYY" :
  458.             vData = vDD + "\/" + vMonth + "\/" + vY4;
  459.             break;
  460.         case "DD\/MM\/YY" :
  461.             vData = vDD + "\/" + vMonth + "\/" + vY2;
  462.             break;
  463.         case "DD-MM-YYYY" :
  464.             vData = vDD + "-" + vMonth + "-" + vY4;
  465.             break;
  466.         case "DD-MM-YY" :
  467.             vData = vDD + "-" + vMonth + "-" + vY2;
  468.             break;
  469.  
  470.         default :
  471.             vData = vMonth + "\/" + vDD + "\/" + vY4;
  472.     }
  473.  
  474.     return vData;
  475. }
  476.  
  477. function Build(p_item, p_month, p_year, p_format) {
  478.     var p_WinCal = ggWinCal;
  479.     gCal = new Calendar(p_item, p_WinCal, p_month, p_year, p_format);
  480.  
  481.     // Customize your Calendar here..
  482.     gCal.gBGColor="white";
  483.     gCal.gLinkColor="black";
  484.  
  485.     gCal.gTextColor="black";
  486.     gCal.gHeaderColor="#007882";
  487.  
  488.     // Choose appropriate show function
  489.     if (gCal.gYearly)    gCal.showY();
  490.     else    gCal.show();
  491. }
  492.  
  493. function show_calendar() {
  494.     
  495.     
  496.     p_item = arguments[0];
  497.     if (arguments[1] == null)
  498.         p_month = new String(gNow.getMonth());
  499.     else
  500.         p_month = arguments[1];
  501.     if (arguments[2] == "" || arguments[2] == null)
  502.         p_year = new String(gNow.getFullYear().toString());
  503.     else
  504.         p_year = arguments[2];
  505.     if (arguments[3] == null)
  506.         p_format = "MM/DD/YYYY";
  507.     else
  508.         p_format = arguments[3];
  509.  
  510.     vWinCal = window.open("", "e19", 
  511.         "width=250,height=250,status=no,resizable=no,top=200,left=200");
  512.     vWinCal.opener = self;
  513.     ggWinCal = vWinCal;
  514.  
  515.     Build(p_item, p_month, p_year, p_format);
  516. }
  517.  
  518.  
  519. function show_yearly_calendar(p_item, p_year, p_format) {
  520.     
  521.     if (p_year == null || p_year == "")
  522.         p_year = new String(gNow.getFullYear().toString());
  523.     if (p_format == null || p_format == "")
  524.         p_format = "MM/DD/YYYY"; 
  525.  
  526.     var vWinCal = window.open("", "Calendar", "scrollbars=yes");
  527.     vWinCal.opener = self;
  528.     ggWinCal = vWinCal;
  529.  
  530.     Build(p_item, null, p_year, p_format);
  531. }
  532.  
  533.  
  534.  
  535.  
  536.  
  537.  
  538.  
  539.  
  540.